import axios from 'axios'
import request from '../utils/phone'

// 发送验证码
export function sendCheckCode(tel) {
  return request.post('/user/dosendmsgcode', { tel })
}

// 验证验证码
export function checkCheckCode(tel, telcode) {
  return request.post('/user/docheckcode', {
    tel,
    telcode
  })
}

// 验证手机号码是否被注册过
export function isTelRegister(tel) {
  return request.post('/user/docheckphone', { tel })
}


// 完成注册
export function completeRegister(tel, password) {
  return request.post('/user/dofinishregister', {
    tel,
    password
  })
}

// 登录
export function gotoLogin(loginname, password) {
  return request.post('/user/login', {
    loginname,
    password
  })
}

// 获取轮播图列表
export function getPictures() {
  return request.get('/banner/list')
}

// 获取商品分页列表数据
export function getCommodityList(count, limitNum) {
  return request.get('/pro/list', {
    params: {
      count,
      limitNum
    }
  })
}

// 获取秒杀区的数据
export function getSeckillList(count, limitNum) {
  return request.get('/pro/seckilllist', {
    params: {
      count,
      limitNum
    }
  })
}

// 获取产品的详情数据
export function getCommodityDetail(proid) {
  return request.get(`/pro/detail/${proid}`)
}

// 加入购物车
export function addCart(proid, num) {
  return request.post('/cart/add', {
    userid: localStorage.getItem('userid'),
    proid,
    num
  })
}

// 查看购物车
export function getCartList() {
  return request.post('/cart/list', {
    userid: localStorage.getItem('userid')
  })
}

//  更新购物车数量
// 为了防止重复点击 导致重复发送请求 解决办法：取消前面的请求 以最后一次请求为准
// 1. 在函数外 CancelToken 变量
let updateItemNumSource
export function renewCartList(cartid, num) {
  if (updateItemNumSource) {
    updateItemNumSource.cancel()
  }
  // 2. 生成 CancelToken
  updateItemNumSource = axios.CancelToken.source()
  return request.post('/cart/updatenum', {
    cartid,
    num
  },
    // 3.传递 CancelToken 属性
    //  3.1 post请求的第三个参数，传递一个属性 CancelToken
    //  3.2 get请求的第二个参数，传递一个属性 CancelToken
    {
      cancelToken: updateItemNumSource.token
    })
}

// 删除购物车单条数据
export function removeSingle(cartid) {
  return request.post('/cart/remove', {
    cartid
  })
}

// 获取推荐产品列表的数据
export function getHotProducts(count, limitNum) {
  return request.get('/pro/recommendlist', {
    params: {
      count,
      limitNum
    }
  })
}

// 更新单个商品选中状态
let updateItemFlagSource
export function updateItemFlag(cartid, flag) {
  if (updateItemFlagSource) {
    updateItemFlagSource.cancel()
  }
  updateItemFlagSource = axios.CancelToken.source()
  return request.post('/cart/selectone', {
    cartid,
    flag
  }, {
    cancelToken: updateItemFlagSource.token
  })
}

// 更新全部商品选中状态
let updateListFlagSource
export function updateListFlag(type) {
  if (updateListFlagSource) {
    updateListFlagSource.cancel()
  }
  updateListFlagSource = axios.CancelToken.source()
  return request.post('/cart/selectall', {
    userid: localStorage.getItem('userid'),
    type
  }, {
    cancelToken: updateListFlagSource.token
  })
}

// 产品的分类列表
export function getClassList() {
  return request.get('/pro/categorylist')
}

// 产品分类下品牌列表
export function getClassDetail(category) {
  return request.get('/pro/categorybrandlist', {
    params: {
      category
    }
  })
}

// 判断是否登录
export function checkLogin() {
  const token = localStorage.getItem('token')
  const userid = localStorage.getItem('userid')

  return !!token && !!userid
}
